// import {
//   Controller,
//   Get,
//   Post,
//   Put,
//   Delete,
//   Param,
//   Body,
//   UseGuards,
//   Logger,
// } from '@nestjs/common';
// import { LogService } from '../log.service';
// import {
//   LogOperation,
//   LogLogin,
//   LogSecurity,
//   getClientIp,
//   getDeviceInfo,
//   LOG_TYPES,
// } from '../decorators/log.decorators';
// import { UserService } from '../../user/user.service';
// import { ArticleService } from '../../article/article.service';
// import { CommentService } from '../../comment/comment.service';

// @Controller('admin/users')
// @UseGuards(JwtAuthGuard, AdminGuard)
// export class UserLogExampleController {
//   private readonly logger = new Logger(UserLogExampleController.name);

//   constructor(
//     private readonly userService: UserService,
//     private readonly articleService: ArticleService,
//     private readonly commentService: CommentService,
//     private readonly logService: LogService,
//   ) {}

//   @Get()
//   @LogOperation('获取用户列表', 'User', LOG_TYPES.ADMIN_OPERATION)
//   async findAll(@Param() params, @Param() query) {
//     // 这里会自动记录日志
//     const users = await this.userService.findAll(query);
//     return users;
//   }

//   @Get(':id')
//   @LogOperation('查看用户详情', 'User', LOG_TYPES.ADMIN_OPERATION)
//   async findOne(@Param('id') id: string, @Param() request) {
//     // 使用装饰器自动记录操作日志
//     const user = await this.userService.findOne(id);
//     return user;
//   }

//   @Post()
//   @LogOperation('创建用户', 'User', LOG_TYPES.ADMIN_OPERATION)
//   async create(@Body() createUserDto: any, @Param() request) {
//     // 使用装饰器自动记录创建操作
//     const user = await this.userService.create(createUserDto);
    
//     // 同时手动记录更详细的日志
//     await this.logService.logAdminOperation(
//       request.user?.id,
//       request.user?.username,
//       'CREATE_USER',
//       'User',
//       user.id,
//       '创建新用户',
//       { newUserData: createUserDto },
//       getClientIp(request),
//       getDeviceInfo(request),
//       1,
//     );
    
//     return user;
//   }

//   @Put(':id')
//   @LogOperation('更新用户', 'User', LOG_TYPES.ADMIN_OPERATION)
//   async update(@Param('id') id: string, @Body() updateUserDto: any, @Param() request) {
//     // 使用装饰器自动记录更新操作
//     const user = await this.userService.update(id, updateUserDto);
//     return user;
//   }

//   @Delete(':id')
//   @LogOperation('删除用户', 'User', LOG_TYPES.ADMIN_OPERATION)
//   async remove(@Param('id') id: string, @Param() request) {
//     // 使用装饰器自动记录删除操作
//     await this.userService.remove(id);
//     return { message: '用户删除成功' };
//   }
// }

// // 登录控制器的日志示例
// @Controller('auth')
// export class AuthLogExampleController {
//   private readonly logger = new Logger(AuthLogExampleController.name);

//   constructor(
//     private readonly userService: UserService,
//     private readonly logService: LogService,
//   ) {}

//   @Post('login')
//   @LogLogin('用户登录')
//   async login(@Body() loginDto: any, @Param() request) {
//     const ip = getClientIp(request);
//     const device = getDeviceInfo(request);
    
//     try {
//       // 登录逻辑
//       const result = await this.userService.validateUser(loginDto.username, loginDto.password);
      
//       if (result) {
//         // 记录成功登录
//         await this.logService.logLogin(
//           result.id,
//           result.username,
//           'LOGIN_SUCCESS',
//           result.role === 'admin' ? 'admin' : 'user',
//           ip,
//           device,
//           '登录成功',
//           1,
//         );
//       }
      
//       return result;
//     } catch (error) {
//       // 记录登录失败
//       await this.logService.logLogin(
//         0,
//         loginDto.username,
//         'LOGIN_FAILED',
//         'unknown',
//         ip,
//         device,
//         `登录失败: ${error.message}`,
//         2,
//       );
      
//       throw error;
//     }
//   }

//   @Post('logout')
//   @LogLogin('用户登出')
//   async logout(@Param() request) {
//     if (request.user) {
//       await this.logService.logLogin(
//         request.user.id,
//         request.user.username,
//         'LOGOUT_SUCCESS',
//         request.user.role,
//         getClientIp(request),
//         getDeviceInfo(request),
//         '用户登出',
//         1,
//       );
//     }
    
//     return { message: '登出成功' };
//   }
// }

// // 安全事件示例
// @Controller('security')
// export class SecurityLogExampleController {
//   private readonly logger = new Logger(SecurityLogExampleController.name);

//   constructor(private readonly logService: LogService) {}

//   @Post('brute-force-attack')
//   @LogSecurity('暴力破解攻击', 3, '检测到多次登录失败')
//   async detectBruteForceAttack(@Body() attackData: any, @Param() request) {
//     // 记录安全事件
//     await this.logService.logSecurityEvent(
//       0,
//       'SYSTEM',
//       'BRUTE_FORCE_ATTACK',
//       getClientIp(request),
//       attackData,
//       '检测到暴力破解攻击',
//       3, // 高危级别
//       1,
//     );
    
//     return { message: '安全事件已记录' };
//   }
// }